約 5,834,423 件
https://w.atwiki.jp/ntemacs/pages/35.html
■ Emacs 全般で利用できる設定 【お知らせ】 2018/10/14 追記 X11 forwarding を設定した接続先に ssh で接続した際、「No xauth data; using fake authentication data for X11 forwarding」と表示される場合は、接続元の環境で次のコマンドを実行してみてください。 xauth generate 0 . これが原因で comint-read-input-ring 関数が上手く動作しない場合があるようです。設定を行った後は、M-x tramp-cleanup-all-connection で tramp のコネクションをクリアし、再度本設定の操作を実行してみてください。 2018/09/23 追記 PROMPT_COMMAND 変数での コマンドの .bash_history への逐次書き込みでは、コマンドの重複削除は機能しないようです。このため、bash 終了時に .bash_history の重複コマンドを削除する機能を追加しました。 2018/08/21 追記 helm の設定については、次のページを参照してください。 https //github.com/emacs-helm/helm/wiki/Developing 2018/07/26 追記 comint-run は、make-comint を使うと専用コマンドを作ることもできます。本設定と組み合わせてお使いください。 https //i94025.at.webry.info/201402/article_4.html ;; sample (switch-to-buffer (make-comint "bash" "bash")) ; like shell-mode (switch-to-buffer (make-comint "python" "python3")) ; like run-python 2018/06/21 追記 tramp の接続時に接続先の .bash_history が正しく読み込めない状況が発生した場合は、Emacs を終了し、~/.emacs.d/tramp ファイルにエラーメッセージが書き込まれていないか確認してください。エラーメッセージが記録されている場合は、その内容から対処方法を調査して対策し、~/.emacs.d/tramp を消してから Emacs を起動して、動作を確認してください。 次を評価したとき、t が帰ってくれば、正常な状態であると思います。 (file-readable-p (format "/%s username @ hostname ~/.bash_history" tramp-default-method)) ※ user と host は tramp の接続先の値に置き換えてください。 2018/05/07 追記 tramp の挙動がおかしい時は、Emacs を終了後、~/.emacs.d/tramp というファイルを削除してから Emacs を再起動してください。 2015/06/30 追記 gnupack-12.00 以降に添付される .bashrc には、以下で設定を行っている HISTCONTROL や PROMPT_COMMAND の設定が含まれています。gnupack-12.00 以降を利用する場合には、.bashrc の中のこの設定を無効としてご利用ください。 【本題】 【重要】 helm の環境を未構築の場合は、「helm を使うための設定」を参考として設定してください。 helm から comint の入力履歴を検索するための設定です。 comint で管理されている入力履歴 comint-input-ring を helm で表示し、選択実行することができます。 comint の入力履歴を検索しているので、comint-mode を使っているコマンド(comint-run、shell、run-python、run-ruby、sql-* など)で利用することができます。 shell-mode で利用する場合は、接続する shell(但し、bash 限定)のヒストリファイルと直接連携し、次の点を改善するように調整しています。 helm-command-prefix-key + C-p の入力で for文などの複数行に渡るコマンドを一行のコマンドとして検索できる 同じマシン上で複数のshellバッファを起動した場合でもヒストリを共有できる (zsh の share_history みたいな感じ?) 参考としたページは次のとおりとなります。 http //d.hatena.ne.jp/mooz/20090613/p1 http //www.callcc.net/diary/201011.html https //github.com/eclig/emacs-config/blob/master/anything-shell-history.el http //takuya-1st.hatenablog.jp/entry/20090828/1251474360 (require shell) (require tramp) (require tramp-sh) (setq shell-file-name "/bin/bash") ; Mingw版 Emacs から Cygwin の bash を使う場合は、"bash" とすること (setq shell-command-switch "-c") (setq explicit-shell-file-name shell-file-name) ;; 情報源を設定する (setq helm-source-comint-history (helm-build-sync-source "Comint History" candidates (lambda () (let ((ring (buffer-local-value comint-input-ring helm-current-buffer))) (when (ring-p ring) (ring-elements ring)))) candidate-number-limit 1000 ; helm-candidate-number-limit の値を置き換える multiline t action (helm-make-actions "Insert" (lambda (candidate) (comint-goto-process-mark) (comint-delete-input) (insert (mapconcat identity (helm-marked-candidates) "\n"))) "Execute" (lambda (candidate) (comint-goto-process-mark) (comint-delete-input) (insert (mapconcat identity (helm-marked-candidates) "\n")) (comint-send-input))) migemo t)) ;; helm コマンドを作成する (defun helm-comint-history () (interactive) (helm sources helm-source-comint-history prompt "[MIGEMO] pattern " input (thing-at-point line) buffer "*helm comint history*")) ;; comint-input-ring のサイズを指定する (setq comint-input-ring-size 10000) ;; 連続する同一の入力を履歴に格納しない (setq-default comint-input-ignoredups t) ;; キーバインドを設定する ;; コマンドの一部を入力してからキーを打つと、コマンド履歴からのマッチング検索を行う ;; helm-comint-history で空白文字を検索対象としたい場合は、空白文字をエスケープするか2文字入力する (define-key comint-mode-map (kbd "M-p") comint-previous-matching-input-from-input) (define-key comint-mode-map (kbd "M-n") comint-next-matching-input-from-input) ;; (define-key comint-mode-map (kbd "M-r") helm-comint-history) (define-key comint-mode-map (kbd (concat helm-command-prefix-key " C-p")) helm-comint-history) ;; ヒストリファイルを変更しない (setq tramp-histfile-override nil) (defun shell-mode-setup () ;; ヒストリファイル名を設定する (setq comint-input-ring-file-name (concat (file-remote-p default-directory) "~/.bash_history")) ;; 設定コマンドを発行する (process-send-string nil (concat "\\echo;" "\\shopt -u histappend;" ; セッションクローズ時にヒストリファイルへの追記をしない "TRAP=$(\\trap -p 0 | \\sed -r -e \"s/.*? (.*) .*/\\\\1/\" -e s/([^; ] *$)/\\1;/ );" "\\trap " ; bash 終了時に .bash_history の重複行を削除する(以降8行目まで) " \"$TRAP\" " " TMP=$(\\mktemp);" " \\tac ~/.bash_history | \\awk \"!a[\\$0]++\" | \\tac $TMP;" " if [ -s $TMP ]; then" " \\cp $TMP ~/.bash_history;" " fi;" " \\rm $TMP 0;" "\\unset TRAP;" "if [ -f ~/.bash_history ]; then" " (TMP=$(\\mktemp);" ; セッション確立時に追加される不要なコマンド行を削除する(以降6行目まで) " \\sed -e /^exec env /d -e /^exec ssh /d -e / exit || exit$/d ~/.bash_history $TMP;" " if [ -s $TMP ]; then" " \\cp $TMP ~/.bash_history;" " fi;" " \\rm $TMP);" "fi;" "if [ ! -s ~/.bash_history ]; then" " \\echo history ~/.bash_history;" ; history コマンドが正常に機能するように1行追加する "fi;" "PROMPT_COMMAND=\"\\history -a; \\history -c; \\history -r; $PROMPT_COMMAND\";" "\\history -c; \\history -r;" ; ヒストリを初期化する "\n")) ;; ヒストリファイルを読み込む (comint-read-input-ring t) (message "")) ;; shell-mode-hook を設定する (add-hook shell-mode-hook shell-mode-setup) ;; キーバインドを設定する ;; (define-key shell-mode-map (kbd "M-r") (define-key shell-mode-map (kbd (concat helm-command-prefix-key " C-p")) (lambda () (interactive) ;; ヒストリファイルを再読み込みする (comint-read-input-ring t) (helm-comint-history))) ;; bash の環境変数を設定する ;; ・LC_ALL と LC_CTYPE の設定は、リモートサーバで shell を開いた時に日本語が文字化けしないようにするため ;; ・HISTFILE の設定は、tramp での接続時に .bash_history に不要な書き込みをしないようにするため ;; ・HISTIGNORE の設定はなくても良いが、一応設定してみた(.bashrc で設定してあるかも) ;; for remote (let ((process-environment tramp-remote-process-environment)) (setenv "LC_ALL" nil) (setenv "LC_CTYPE" nil) (setenv "HISTFILE" nil) (setenv "HISTIGNORE" "rm* mv* kill*") (setq tramp-remote-process-environment process-environment)) ;; for local (setenv "HISTIGNORE" "rm* mv* kill*") sql-mode を使う場合は、次の設定もしておくと良いようです。 ;; sql-mode が他の comint を使うコマンドに悪さをしないようにするおまじない (advice-add sql-interactive-mode around (lambda (orig-fun rest args) (let (comint-input-ring-separator) (apply orig-fun args)))) 変更履歴 2013/09/17 このページを作成した。 2013/10/15 全面的に内容の見直しを行った。 2013/10/16 表示するヒストリサイズが小さくなってしまっていたのを修正した。 2013/11/25 .bash_historyファイル が存在しなかったり 0サイズ だった場合に正常に機能しなかったのを対策した。 2014/09/04 helm 情報源のデフォルトアクションを Execute から Insert に変更した。 2014/11/03 NTEmacs64 で使った際、リモートで shell を起動する際にエラーが出るので対策した。 2015/09/10 advice を Emacs-24.4 以降の書式に見直した。 2015/09/18 コマンドヒストリーの検索キーを M-r から C-; C-p に変更した。この対応により、M-r に本来割り当てられていたコマンドを利用可能。 2015/10/30 helm-migemo-mode に対応した helm source の書き方に変更した。 2018/05/08 shell-mode-hook で実行している process-send-string の送信コマンドに "shopt -u histappend;" を追加した。 2018/06/21 Emacs-26系で動作しなかったので対応した。 2018/07/25 comint-run など comint-mode を利用するコマンド全てで動作するように、設定を汎用化した。 2018/09/18 候補の複数選択に対応した。 2018/09/23 bash 終了時に .bash_history の重複コマンドを削除する機能を追加した。 2018/09/23 helm の情報源の multiline を OFF とした。 2018/10/08 comint-input-ring-file-name の指定方法を変更した。 2018/10/17 signal 0 の時の trap 処理を追加する仕様に見直した。 2019/04/17 キーバインドの設定方法、comint-input-ignoredups バッファローカル変数の設定方法を変更した。
https://w.atwiki.jp/ntemacs/pages/48.html
■ Windows版 Emacs 共通の設定 (一部の設定を除き、Linux版 Emacs にも適用可能) 【お知らせ】 2021/12/16 追記 相互リンク。こちらも参考になると思います。 https //ploversky.net/archives/463 2020/04/23 追記 ワンショットモディファイアの機能を利用し、左右の Alt キーに IME の切替えを割り当てられるようにしました。Keyhac の設定と連携することで動作します。US のキーボードを利用している場合にお試しください。 なお、次の設定も同じ操作性にできるように見直しました。 Windows の操作を Emacs のキーバインドで行うための設定 (Keyhac版) 2020/04/13 追記 「IME を無効にするキー設定」と「IME を有効にするキー設定」を追加しました。初期設定では、「無変換」キーと「変換」キーを割り当てています。C-o の設定はトグル動作となっていますが、設定の中のコメントを見直すことで変更可能です。お勧めは、C-o のトグル設定は残して C-j に英数への切替えを設定するものです。日本語への切替えが C-o によるトグル操作による切替えの他、C-j C-o での一発切替えが可能となります。(helm 利用の際に C-j がバッティングしますが、C-o で逃げれます。) なお、次の設定も同じ操作性にできるように見直しました。 Windows の操作を Emacs のキーバインドで行うための設定 (Keyhac版) 2019/05/17 追記 wdired 利用時に C-o による日本語入力を可能とする設定を追加しました。 2018/08/12 追記 mozc-im-mode 変数をバッファローカル変数にする方法を make-variable-buffer-local 関数を使う方法から defvar-local で定義する方法に見直しました。Emacs-24.3 以降で有効な設定となります。 https //qiita.com/tadsan/items/9d287a57c26711387043 2018/01/04 追記 mozc-candidate-dispatch の advice が helm の仕様変更により動作しなくなっていましたので見直しました。この対応で、dired 利用時に + キーで動作する dired-create-directory でも日本語が正常に入力できるようになりました。 2017/05/04 追記 本設定は Windows Subsystem for Linux でも利用可能です。設定は次のページから始めてください。 emacs-mozc を動かすための設定(WSL 設定編) 2016/12/01 追記 次のページで報告されている問題について対策しました。 https //github.com/d5884/mozc-im/pull/1 2016/09/13 追記 5) で mozc_emacs_helper.exe に対し IME を ON にするために発行しているキーを「Hiragana」から「Hankaku/Zenkaku」に変更しました。この対応で、Google日本語入力のキー設定が「MS-IME」以外の「ことえり」などでも emacs-mozc を使えるようになりました。(ただし、「Hankaku/Zenkaku」キーは「Hiragana」キーと異なり、IME の ON/OFF をトグルするキーとなります。必要な場合に一度のみ発行するように注意して利用する必要があります。(本設定を利用すれば問題は発生しません。)) 2015/12/07 追記 本設定とは直接関係ありませんが、isearch でキルリングを張り付けるには、C-s RET C-y とすればいいのですね。知りませんでした..。 http //kouritool.com/itdiary/emacs%E3%81%A7%E5%BC%B5%E3%82%8A%E4%BB%98%E3%81%91%E6%96%87%E5%AD%97%E5%88%97%E3%82%92%E6%A4%9C%E7%B4%A2/ 【本題】 【重要】 WSL版 Emacs の利用者は、最初に「emacs-mozc を動かすための設定(WSL 設定編)」を参照してください。 【重要】 Windows版 Emacs の利用者は、事前に「emacs-mozc を動かすための設定(mozc_emacs_helper コンパイル編)」を参照してください。 【重要】 「emacs-mozc を動かすための設定(サーバ準備編)」を行う方法もありますが、特に理由がなければ mozc_emacs_helper.exe を利用する方法をお勧めします。 【重要】 Linux で mozc(Google日本語入力ではなく)を利用する場合は、次の対応を行った後、(共通)の設定を進んで下さい。 $ sudo apt install emacs-mozc-bin $ sudo apt install mozc-utils-gui NTEmacs で emacs-mozc を動かすための Emacs 設定編です。 以下は設定手順です。 1) (共通)melpa package から、mozc、mozc-im、mozc-popup をインストールする。 ※ mozc-candidate-style を overlay に設定した場合、動作が遅く使用に耐えません。これを改善するのが mozc-popup です。tabbar との相性も良いとの情報もあります。 ※ mozc-im を使うことで、isearch の中でも mozc による日本語入力が可能となります。 2) (共通)次のページから mozc-cursor-color.el をダウンロードし、~/.emacs.d/site-lisp 等の load 対象となるディレクトリ配下にサブディレクトリを作成し格納する。 https //github.com/iRi-E/mozc-el-extensions 3) (「サーバ準備編」利用の場合)サーバ準備編で git により作成された vagrant-emacs-mozc ディレクトリ以下に mozc-emacs-helper.sh というファイルがあるので、このファイルを ~/bin 等の PATH の通ったフォルダにコピーする。既存の Linux環境を利用する場合は、mozc-emacs-helper.sh の中身を確認し、Linuxマシンに自動ログインできるスクリプトに書き換える。置き換えるスクリプトは以下のようなもの。 ssh user @localhost -p port mozc_emacs_helper "$@" また、MinGW版 Emacs を利用している場合は、「fakecygpty を使うための設定」を利用し、fakecygpty-program-list に "mozc-emacs-helper.sh" を追加する。 4) (共通)init.el 等に以下の elisp の設定を追加する。 (require mozc-im) (require mozc-popup) (require mozc-cursor-color) (require wdired) (setq default-input-method "japanese-mozc-im") ;; popupスタイル を使用する (setq mozc-candidate-style popup) ;; カーソルカラーを設定する (setq mozc-cursor-color-alist ((direct . "red") (read-only . "yellow") (hiragana . "green") (full-katakana . "goldenrod") (half-ascii . "dark orchid") (full-ascii . "orchid") (half-katakana . "dark goldenrod"))) ;; カーソルの点滅を OFF にする (blink-cursor-mode 0) (defun enable-input-method ( optional arg interactive) (interactive "P\np") (if (not current-input-method) (toggle-input-method arg interactive))) (defun disable-input-method ( optional arg interactive) (interactive "P\np") (if current-input-method (toggle-input-method arg interactive))) (defun isearch-enable-input-method () (interactive) (if (not current-input-method) (isearch-toggle-input-method) (cl-letf (((symbol-function toggle-input-method) (symbol-function ignore))) (isearch-toggle-input-method)))) (defun isearch-disable-input-method () (interactive) (if current-input-method (isearch-toggle-input-method) (cl-letf (((symbol-function toggle-input-method) (symbol-function ignore))) (isearch-toggle-input-method)))) ;; IME をトグルするキー設定 (global-set-key (kbd "C-o") toggle-input-method) (define-key isearch-mode-map (kbd "C-o") isearch-toggle-input-method) (define-key wdired-mode-map (kbd "C-o") toggle-input-method) ;; IME を無効にするキー設定 (global-set-key (kbd "C- f1 ") disable-input-method) (define-key isearch-mode-map (kbd "C- f1 ") isearch-disable-input-method) (define-key wdired-mode-map (kbd "C- f1 ") disable-input-method) ;; (global-set-key (kbd "C-j") disable-input-method) ;; (define-key isearch-mode-map (kbd "C-j") isearch-disable-input-method) ;; (define-key wdired-mode-map (kbd "C-j") disable-input-method) ;; IME を有効にするキー設定 (global-set-key (kbd "C- f2 ") enable-input-method) (define-key isearch-mode-map (kbd "C- f2 ") isearch-enable-input-method) (define-key wdired-mode-map (kbd "C- f2 ") enable-input-method) ;; (global-set-key (kbd "C-o") enable-input-method) ;; (define-key isearch-mode-map (kbd "C-o") isearch-enable-input-method) ;; (define-key wdired-mode-map (kbd "C-o") enable-input-method) ;; mozc-cursor-color を利用するための対策 (defvar-local mozc-im-mode nil) (add-hook mozc-im-activate-hook (lambda () (setq mozc-im-mode t))) (add-hook mozc-im-deactivate-hook (lambda () (setq mozc-im-mode nil))) (advice-add mozc-cursor-color-update around (lambda (orig-fun rest args) (let ((mozc-mode mozc-im-mode)) (apply orig-fun args)))) ;; isearch を利用する前後で IME の状態を維持するための対策 (add-hook isearch-mode-hook (lambda () (setq im-state mozc-im-mode))) (add-hook isearch-mode-end-hook (lambda () (unless (eq im-state mozc-im-mode) (if im-state (activate-input-method default-input-method) (deactivate-input-method))))) ;; wdired 終了時に IME を OFF にする (advice-add wdired-finish-edit after (lambda ( rest args) (deactivate-input-method))) gnupack 等で W32-IME の設定がされている場合は、以下の箇所をコメント化してください。 gnupack-11系: 「@ime」セクション gnupack-12,13系: 「@ language - input method」セクション、「@ screen - cursor」セクション、「@ search - isearch」セクションの後半 MinGW版 Emacs を使っている場合は、以下の設定を追加してください。 ;; IME が ON の時、カーソルの移動が遅くなるのを改善する (setq w32-pipe-read-delay 10) helm を使っている場合は、以下の設定を追加してください。 (require cl-lib) ;; helm でミニバッファの入力時に IME の状態を継承しない (setq helm-inherit-input-method nil) ;; helm の検索パターンを mozc を使って入力した場合にエラーが発生することがあるのを改善する (advice-add mozc-helper-process-recv-response around (lambda (orig-fun rest args) (cl-loop for return-value = (apply orig-fun args) if return-value return it))) ;; helm の検索パターンを mozc を使って入力する場合、入力中は helm の候補の更新を停止する (advice-add mozc-candidate-dispatch before (lambda ( rest args) (when helm-alive-p (cl-case (nth 0 args) ( update (unless helm-suspend-update-flag (helm-kill-async-processes) (setq helm-pattern "") (setq helm-suspend-update-flag t))) ( clean-up (when helm-suspend-update-flag (setq helm-suspend-update-flag nil))))))) ;; helm で候補のアクションを表示する際に IME を OFF にする (advice-add helm-select-action before (lambda ( rest args) (deactivate-input-method))) 5) (「mozc_emacs_helper コンパイル編」利用の場合)init.el 等に以下の elisp の設定を追加する。 ;; Windows の mozc では、セッション接続直後 directモード になるので hiraganaモード にする (advice-add mozc-session-execute-command after (lambda ( rest args) (when (eq (nth 0 args) CreateSession) ;; (mozc-session-sendkey (hiragana))))) (mozc-session-sendkey (Hankaku/Zenkaku))))) 6) (「サーバ準備編」利用の場合)init.el 等に以下の elisp の設定を追加する。 ;; https //github.com/igjit/vagrant-emacs-mozc (setq mozc-helper-program-name "mozc_emacs_helper.sh") (setq mozc-helper-process-timeout-sec 10) 7) (「mozc_emacs_helper コンパイル編」利用の場合)mozc のキーバインドを設定する。 「Google日本語入力」のプロパティで、「キー設定」を「ことえり」に選択してください。「ことえり」は Emacsキーバインドをベースとしたキー設定となっており、更に以下のキーが近いキー位置で利用可能となっています。 C-i (文節を縮める) C-o (文節を伸ばす) C-j (ひらがなに表示切替) C-k (全角カタカナに表示切替) C-l (全角英数に表示切替) C-; (半角に表示切替) C- /C- (半角英数に表示切替) ※ ターミナルソフトから Emacs を利用する場合、C-;、C- 、C- は利用できません。他のキーに置き換えてご利用ください。 8) (「サーバ準備編」利用の場合)mozc のキーバインドを設定する。 Linuxサーバ の mozc のキーバインドの設定は mozc_tool というコマンドで行いますが、Vargent で作成した Linuxサーバには mozc_tool はインストールされていません。このため、Windows PC に「Google日本語入力」をインストールして 7) の設定を行い、設定した結果が格納されている以下のファイルを Linux 側の ~/.mozc ディレクトリにコピーすることで対応してください。ファイルをコピーした後は Linuxサーバを再起動してください。 c /Users/ user /AppData/LocalLow/Google/Google Japanese Input/config1.db コマンド実行手順は以下のとおりとなります。 $ ssh -p 2422 -i ~/.vagrant.d/insecure_private_key vagrant@127.0.0.1 mkdir -p ~/.mozc $ cd c /Users/ user /AppData/LocalLow/Google/Google Japanese Input $ scp -P 2422 -i ~/.vagrant.d/insecure_private_key config1.db vagrant@127.0.0.1 ~/.mozc $ cd gitした場所 /vagrant-emacs-mozc $ vagrant reload なお、Linuxサーバに mozc-utils-guiパッケージ をインストールすれば、mozc_tool コマンドの表示を Cygwin/X 等の Xサーバに表示させることができます。コマンドは以下のとおりです。 $ sudo apt install mozc-utils-gui $ /usr/lib/mozc/mozc_tool --mode=config_dialog ただし、「emacs-mozc を動かすための設定(サーバ準備編)」でインストールした Linuxサーバ では、LANG の設定をしただけでは日本語の表示はできないようです。 9) (共通)Emacs で C-o を入力することにより、mozc-emacs-helper が起動し、漢字が入力できることを確認する。 ※ 「emacs-mozc を動かすための設定(WSL 設定編)」から本ページに来た場合は、まだ漢字入力はできません。このまま進んでください。 10) (共通)Windows の IME の切換えキーで mozc を切り替えられるように調整する。 ※ Virtualbox の Linux で Emacs を動作させている場合は、本設定で利用している Keyhac は有効に機能しません。本設定は、Windows版 Emacs や Windows の Xサーバソフトを経由して Emacs を動作させている場合に有効な設定です。 Windows の IME の切換えキー(「半角/全角」(日本語キーボード用)や Alt-`(英語キーボード用))で mozc を切り替えられるようにするには、「Windows の操作を Emacs のキーバインドで行うための設定 (Keyhac版)」の併用を検討ください。(Fakeymacs extension の real-emacs を有効にしてください。)IME の切換えの対応のみ行いたい場合には、以下の設定が利用できます。設定の方法はコメントの URL を参照してください。 これらの設定は、NTEmacs(gnupack 含む)と Windows の Xサーバで動く Emacs で機能するようにしています。Windows の Xサーバで Emacs が動作しているかどうかは、ウィンドウのタイトルで判定しています。Emacs の設定でタイトルの表示内容を変更している場合には、re.search 内の検索する正規表現を調整することで対応してください。 # -*- mode python; coding utf-8-with-signature-dos -*- # http //qiita.com/hshimo/items/2f3f7e070ae75243eb8b import re from keyhac import * def configure(keymap) def is_real_emacs(window) if (window.getClassName() == "Emacs" or (window.getProcessName() in ["mstsc.exe", # WSLg "msrdc.exe", # WSLg "XWin.exe", # Cygwin/X "XWin_MobaX.exe", # MobaXterm/X "XWin_MobaX_1.16.3.exe", # MobaXterm/X "XWin_Cygwin_1.14.5.exe", # MobaXterm/X "XWin_Cygwin_1.16.3.exe", # MobaXterm/X "Xming.exe", # Xming "vcxsrv.exe", # VcXsrv "GWSL_vcxsrv.exe", # GWSL "GWSL_vcxsrv_lowdpi.exe", # GWSL "X410.exe", # X410 "Xpra-Launcher.exe", # Xpra ] and # ウィンドウのタイトルを検索する正規表現を指定する # Emacs を起動しているウィンドウを検索できるように、Emacs の frame-title-format 変数を # 次のように設定するなどして、識別できるようにする # (setq frame-title-format (format "emacs-%s - %%b " emacs-version)) # (別途公開している sglstart コマンドを利用している場合、%%b の後のスペースは必要) re.search(r"^emacs-", window.getText()))) return True else return False keymap_real_emacs = keymap.defineWindowKeymap(check_func=is_real_emacs) # IME 切り替え用のキーの置き換え keymap_real_emacs["(243)"] = keymap.InputKeyCommand("C-Yen") # 半角/全角 キー keymap_real_emacs["(244)"] = keymap.InputKeyCommand("C-Yen") # 半角/全角 キー keymap_real_emacs["A-(25)"] = keymap.InputKeyCommand("C-Yen") # Alt-` キー keymap_real_emacs["(29)"] = keymap.InputKeyCommand("C-F1") # 無変換 キー keymap_real_emacs["(28)"] = keymap.InputKeyCommand("C-F2") # 変換 キー # keymap_real_emacs["O-LAlt"] = keymap.InputKeyCommand("C-F1") # 左 Alt キーの単押し # keymap_real_emacs["O-RAlt"] = keymap.InputKeyCommand("C-F2") # 右 Alt キーの単押し 変更履歴 2014/10/30 このページを作成した。 2014/11/02 minibuffer-setup-hook の設定を追加した。 2014/11/04 wdired を使う際の設定を追加した。 2014/11/18 「emacs-mozc を動かすための設定(mozc_emacs_helper コンパイル編)」に対応した。 2014/11/20 IME が ON の時、カーソルの移動が遅くなる対策を追加した。(w32-pipe-read-delay の値を デフォルトの 50 から 10 に変更した。) 2014/11/24 minibuffer-setup-hook 内の unless の判定を Emacs-24.3 以前のバージョンでも有効なものに変更した。 2014/11/27 helm の検索パターンを mozc を使って入力した場合にエラーが発生することがある対策を追加した。 2014/11/29 helm の検索パターンを mozc を使って入力する場合、入力中は helm の候補の更新を停止するようにした。 2014/12/12 helm で候補のアクションを表示する際に IME を OFF にするようにした。 2015/01/17 mozc-popup を最新と思われるサイトのものの利用に変更した。 2015/03/11 mozc-helper-process-recv-response のアドバイスの内容を簡略化した。 2015/07/22 Emacs-24.3 以上の対応の記載とした。 2015/09/10 advice を Emacs-24.4 以降の書式に見直した。 2015/10/30 mozc-im を利用するように設定を全面的に見直した。 2015/11/12 mozc-candidate-dispatch の advice を一度削除していたが、やはりあるべき設定のようなので復活させた。 2015/12/28 keyhac の設定の内容を、Keyhac for Windows ver 1.70 用に見直しをした。 2016/12/01 https //github.com/d5884/mozc-im/pull/1 で報告されている問題について対策した。 2017/07/11 Emacs で mozc を利用する際に Windows の IME の切換えキーを mozc の切り替えキーとして機能させるための設定を見直した。 2017/12/21 keyhac の設定で import re の行が不足していたので、追加した。 2019/05/17 wdired 利用時に C-o による日本語入力を可能とする設定を追加した。 2020/04/13 「IME を無効にするキー設定」と「IME を有効にするキー設定」を追加した。 2020/04/19 ワンショットモディファイアの機能を利用し、左右の Alt キーに IME の切替えを割り当てられるようにした。
https://w.atwiki.jp/0x0b/pages/56.html
Date Dateオブジェクトの概要、内部演算子の定義 Date オブジェクトは、時間内の個々の瞬間をミリ秒で示す数で構成される。まずは NaN であることもあり、 Date オブジェクトが時間の特定の瞬間をあらわさないことを示す。 次セクションは時間値の演算のための数々の関数を定義する。 各ケースについて、その関数の引数が NaN ならば、結果は NaN となる。 時間の範囲 時間は、 ECMAScript では UTC 1970 年 1 月 1 日 からのミリ秒で計測される。うるう秒は無視される。一日あたり正解に 86,400,000 秒ということにする。 ECMAScript 数値は -9,007,199,254,740,991 から 9,007,199,254,740,991 まで表現できる; この範囲は、 UTC 1970 年 1 月 1 日 を基点とする前後約 285,616 年間の任意の瞬間の、厳密なミリ秒での時間計測を可能にする。 ECMAScript Date オブジェクトがサポートする実際の時間の範囲はわずかに小さい; 厳密には、 UTC 1970 年 1 月 1 日開始時の午前零時から計測される -100,000,000 日から 100,000,000 日である。 これは UTC 1970 年 1 月 1 日 から過去未来の両側に 8,640,000,000,000,000 ミリ秒の範囲を与える。 厳密な UTC 1970 年 1 月 1 日開始時の午前零時は、値 +0 で表される。 日数、一日内の時間 時間値 t は日数 (day number) に属する Day(t) = floor(t / msPerDay) 一日あたりのミリ秒数のところは msPerDay = 86400000 残りは一日内の時間と呼ばれる TimeWithinDay(t) = t modulo msPerDay 年数 ECMAScript は、日数の年数へのマップと一年内の月日の決定にグレゴリオ暦を用いる。このシステムでは、うるう年は正確に (4 で割り切れる) かつ (*1) ような年である。それゆえ年数 y の日数は次のように定義される。 DaysInYear(y) = 365 if (y modulo 4) ≠ 0 = 366 if (y modulo 4) = 0 and (y modulo 100) ≠ 0 = 365 if (y modulo 100) = 0 and (y modulo 400) ≠ 0 = 366 if (y modulo 400) = 0 非うるう年は通常の月ごとの日数で 365 日であり、うるう年は 2 月に追加日を持つ。 年 y の最初の日の日数は次に与えられる DayFromYear(y) = 365 × (y(1970) + floor((y(1969)/4) − floor((y(1901)/100) + floor((y−1601)/400) 年の開始の時間値は TimeFromYear(y) = msPerDay ( DayFromYear(y) 時間値は次によって年を決定する YearFromTime(t) = TimeFromYear(y) ≤ t であるような (正の無限大に最も近い) 最大整数 y うるう年関数は、時間がうるう年内であれば 1 であり、そうでなければ 0 である InLeapYear(t) = 0 if DaysInYear(YearFromTime(t)) = 365 = 1 if DaysInYear(YearFromTime(t)) = 366 月数 月は、 0 から 11 の範囲の整数で識別される。時間値 t から月数へのマッピング MonthFromTime(t) は次で定義される MonthFromTime(t) = 0 if 0 ≤ DayWithinYear(t) 31 = 1 if 31 ≤ DayWithinYear (t) 59+InLeapYear(t) = 2 if 59+InLeapYear(t) ≤ DayWithinYear (t) 90+InLeapYear(t) = 3 if 90+InLeapYear(t) ≤ DayWithinYear (t) 120+InLeapYear(t) = 4 if 120+InLeapYear(t) ≤ DayWithinYear (t) 151+InLeapYear(t) = 5 if 151+InLeapYear(t) ≤ DayWithinYear (t) 181+InLeapYear(t) = 6 if 181+InLeapYear(t) ≤ DayWithinYear (t) 212+InLeapYear(t) = 7 if 212+InLeapYear(t) ≤ DayWithinYear (t) 243+InLeapYear(t) = 8 if 243+InLeapYear(t) ≤ DayWithinYear (t) 273+InLeapYear(t) = 9 if 273+InLeapYear(t) ≤ DayWithinYear (t) 304+InLeapYear(t) = 10 if 304+InLeapYear(t) ≤ DayWithinYear (t) 334+InLeapYear(t) = 11 if 334+InLeapYear(t) ≤ DayWithinYear (t) 365+InLeapYear(t) DayWithinYear(t) は次のように定義する DayWithinYear(t)= Day(t)(DayFromYear(YearFromTime(t)) 月の値 0 は 1 月を指す; 1 は 2 月を指す ; 2 は 3 月を指す; 3 は 4 月を指す; 4 は 5 月を指す; 5 は 6 月を指す; 6 は 7 月を指す; 7 は 8 月を指す; 8 は 9 月を指す; 9 は 10 月を指す; 10 は 11 月を指す; 11 は 12 月を指す。 MonthFromTime(0) = 0 は 1970 年 1 月 1 日木曜日 に該当することに注意。 日付数 日付は、 1 から 31 の範囲の整数で識別される。時間値 t から日付数へのマッピング DateFromTime(t) は次で定義される DateFromTime(t) = DayWithinYear(t)+1 if MonthFromTime(t)=0 = DayWithinYear(t)− 30 if MonthFromTime(t)=1 = DayWithinYear(t)− 58(InLeapYear(t) if MonthFromTime(t)=2 = DayWithinYear(t)− 89(InLeapYear(t) if MonthFromTime(t)=3 = DayWithinYear(t)−119(InLeapYear(t) if MonthFromTime(t)=4 = DayWithinYear(t)−150(InLeapYear(t) if MonthFromTime(t)=5 = DayWithinYear(t)−180(InLeapYear(t) if MonthFromTime(t)=6 = DayWithinYear(t)−211(InLeapYear(t) if MonthFromTime(t)=7 = DayWithinYear(t)−242(InLeapYear(t) if MonthFromTime(t)=8 = DayWithinYear(t)−272(InLeapYear(t) if MonthFromTime(t)=9 = DayWithinYear(t)−303(InLeapYear(t) if MonthFromTime(t)=10 = DayWithinYear(t)−333(InLeapYear(t) if MonthFromTime(t)=11 曜日 個々の時間値 t の曜日はこのように定義する。 WeekDay(t) = (Day(t) + 4) modulo 7 曜日値 0 は日曜日を指す; 1 は月曜日を指す; 2 は火曜日を指す; 3 は水曜日を指す; 4 は木曜日を指す; 5 は金曜日を指す; 6 は土曜日を指す。 WeekDay(0) = 4 は、 1970 年 1 月 1 日木曜日 に該当することに注意。 地方調整時 ECMAScript 実装は地方調整時の決定を期待される。地方調整時は、 UTC に追加して地方標準時をあらわす、ミリ秒で測られる値 LocalTZA である。値 LocalTZA は時間によっては変わらないが、地理的な位置に依存する。 夏時間調整 ECMAScript 実装は、夏時間調整アルゴリズムの決定を期待される。ミリ秒で測られる夏時間調整 DaylightSavingTA(t) を決定するアルゴリズムは、次の 4 点にのみ依存する (1)年の開始からの時間 t - TimeFromYear(YearFromTime(t)) (2)t がうるう年かどうか InLeapYear(t) (3)年の開始の曜日 WeekDay(TimeFromYear(YearFromTime(t)) (4)地理的な位置 ECMASciript 実装は正確な時間が夏時間に従ったか否かの決定を試みるべきではないが、その時現在の夏時間アルゴリズムが使われているならば、夏時間の影響下にあるかどうかの決定を試みるべきである。これは年回りで夏時間を認められるロケールの年を考慮するようなような煩雑さ回避する (This avoids complications such as taking into account the years that the locale observed daylight saving time year round.)。 ホスト環境が夏時間調整の決定の機能性を提供するならば、 ECMAScript 実装は、問題の年をホスト環境が夏時間調整情報を提供する同等の年 (同じ閏年で同じ曜日に開始しうる年) に自由にマップできる。同等である全ての年が同じ結果を生成するべきであるということだけ制限される。 地方時 UTC から地方時への変換は LocalTime(t) = t + LocalTZA + DaylightSavingTA(t) 地方時から UTC への変換は UTC(t) = t - LocalTZA - DaylightSavingTA(t - LocalTZA) UTC(LocalTime(t)) は常に t と等しいとは限らないことに注意。 時、分、秒、ミリ秒 次の関数が時間値の分解に使用される HourFromTime(t) = floor(t / msPerHour) modulo HoursPerDay MinFromTime(t) = floor(t / msPerMinute) modulo MinutesPerHour SecFromTime(t) = floor(t / msPerSecond) modulo SecondsPerMinute msFromTime(t) = t modulo msPerSecond それぞれ次のように定める HoursPerDay = 24 MinutesPerHour = 60 SecondsPerMinute = 60 msPerSecond = 1000 msPerMinute = msPerSecond × SecondsPerMinute = 60000 msPerHour = msPerMinute × MinutesPerHour = 3600000 MakeTime(hour, min, sec, ms) MakeTime 演算子は、 ECMAScript 数値 でなければならない 4 つの引数から、ミリ秒の数を算出する。この演算子は次のように機能する MakeDay(year, month, date) MakeDay 演算子は、 ECMAScript 数値 でなければならない 3 つの引数から、日数の数を算出する。この演算子は次のように機能する MakeDate(day, time) MakeDate 演算子は、 ECMAScript 数値 でなければならない 2 つの引数から、ミリ秒の数を算出する。この演算子は次のように機能する TimeClip(time) TimeClip 演算子は、 ECMAScript 数値 でなければならない引数から、ミリ秒の数を算出する。この演算子は次のように機能する NOTE ステップ 3 のポイントは、時間値の内部表現、例えば 符号付き 64 ビット整数、または 64 ビット浮動小数点数の値の選択を実装に許可することである。実装に依存して、この内部表現は −0 と +0 を区別してもしなくてもよい。 関数として呼ばれるDateコンストラクタ コンストラクタとしてではなく関数として Date が呼出されるとき、それは現在時間 (UTC) のあらわす文字列を返す。 NOTE 関数呼出し Date(...) と、同じ引数を持つオブジェクト生成式 new Date(...) は、等価ではない。 Date ( [ year [, month [, date [, hours [, minutes [, seconds [, ms ] ] ] ] ] ] ] ) すべたの引数は選択的である; 供給された引数は受け付けるが、それ以外は無視される。文字列が生成され、式 (new Date()).toString() によるものと同様の結果が返される。 Dateコンストラクタ Date が new 式の一部として呼ばれる場合、それはコンストラクタである; 新規にオブジェクトを生成し、初期化する。 new Date (year, month [, date [, hours [, minutes [, seconds [, ms ] ] ] ] ] ) ate が 2 個から 7 個の引数で呼出されるとき、 year, month, (以下選択的に) date, hours, minutes, seconds , ms から、日付を算出する。 新規に構築されたオブジェクトの Prototype プロパティは、 Date.prototypeの初期値である、オリジナルの Date プロトタイプオブジェクトに設定される。 新規に構築されたオブジェクトの Class プロパティは、 "Date" に設定される。 新規に構築されたオブジェクトの Value プロパティは次のように設定される new Date (value) 新規に構築されたオブジェクトの Prototype プロパティは、 Date.prototypeの初期値である、オリジナルの Date プロトタイプオブジェクトに設定される。 新規に構築されたオブジェクトの Class プロパティは、 "Date" に設定される。 新規に構築されたオブジェクトの Value プロパティは次のように設定される new Date () 新規に構築されたオブジェクトの Prototype プロパティは、 Date.prototypeの初期値である、オリジナルの Date プロトタイプオブジェクトに設定される。 新規に構築されたオブジェクトの Class プロパティは、 "Date" に設定される。 新規に構築されたオブジェクトの Value プロパティは、現在時間 (UTC) に設定される。 Dateコンストラクタのプロパティ Date コンストラクタの内部 Prototype プロパティの値は、 Function プロトタイプオブジェクト 内部プロパティと length プロパティ (値は 7) の他に、 Date コンストラクタは次のプロパティを持つ。 Date.prototype Date.prototype の初期値は、 Date プロトタイプオブジェクト このプロパティは、属性 { DontEnum, DontDelete, ReadOnly } を持つ。 Date.parse (string) parse 関数は、引数に ToString 演算子を適用し、結果の文字列を日付として解析する; 数、その日に該当する UTC 時間値を返す。文字列は地方時、 UTC 時、他のタイムゾーンの時間のどれ解析されてもよく、文字列の内容に依存する。 個々のECMAScript 実装中で ミリ秒が 0 である Date オブジェクトを x とするならば、次の全ての式がその実装中で同じ数字を生成する。全ての参照付けられたプロパティが初期値を持つならば、 then all of the following expressions should produce the same numeric value in that implementation, if all the properties referenced have their initial values x.valueOf() Date.parse(x.toString()) Date.parse(x.toUTCString()) しかしながら、式 Date.parse(x.toLocaleString()) は前の3つの式と同じ数値の生成を要求されない。一般に、その実装の toString か toUTCString メソッドによって生成されえない文字列を与えられたときの Date.parse に生成される値は、実装依存である。 Date.UTC (year, month [, date [, hours [, minutes [, seconds [, ms ] ] ] ] ] ) UTC 関数が 2 個に満たない引数で呼出されたとき、振る舞いは実装依存である。 UTC 関数が 2 個から 7 個の引数で呼出されるとき、year, month, (以下選択的に) date, hours, minutes, seconds, ms から、日付を算出する。 次のステップが取られる Dateプロトタイプオブジェクトのプロパティ ate プロトタイプオブジェクトは、それ自身が値 NaN の Date オブジェクト (Class が "Date") である。 Date プロトタイプオブジェクトの内部 Prototype プロパティの値は、 Object プロトタイプオブジェクト この後の Date プロトタイプオブジェクトのプロパティである関数の説明において、フレーズ "この Date オブジェクト" は、関数呼出しの this 値であるオブジェクトを参照する。汎用的な関数はない; this が内部 Class プロパティの値が "Date" であるオブジェクトではないならば、例外 TypeError を投げる。また、フレーズ "この時間値" は、この Date オブジェクトに表される時間の数値、すなわち、この Date オブジェクトの内部 Value プロパティの値を参照する。 Date.prototype.constructor .prototype.constructor の初期値は、組込み Date コンストラクタ Date.prototype.toString () この関数は文字列値を返す。文字列の内容は実装依存であるが、現在のタイムゾーンの、簡便で人間に読解可能な形式の Date の表現が意図される。 NOTE 任意の Date 値 d について、 Date.prototype.parse(d.toString())の結果が d と等しいことが意図される。 Date.prototype toDateString () この関数は文字列値を返す。文字列の内容は実装依存であるが、現在のタイムゾーンの、簡便で人間に読解可能な形式の Date の "date" 成分の表現が意図される。 Date.prototype.toTimeString () の関数は文字列値を返す。文字列の内容は実装依存であるが、現在のタイムゾーンの、簡便で人間に読解可能な形式の Date の "time" 成分の表現が意図される。 Date.prototype.toLocaleString () この関数は文字列値を返す。文字列の内容は実装依存であるが、現在のタイムゾーンの、簡便で人間に読解可能な、ホスト環境の現在のロケールの慣習に該当する形式の Date の表現が意図される。 NOTE この関数の第一引数は、この標準の将来のバージョンで使用される可能性がある; 実装はこのパラメータを他の用途に使用しないことを推奨される。 Date.prototype.toLocaleDateString () この関数は文字列値を返す。文字列の内容は実装依存であるが、現在のタイムゾーンの、簡便で人間に読解可能な、ホスト環境の現在のロケールの慣習に該当する形式の Date の "date" 成分の表現が意図される。 NOTE この関数の第一引数は、この標準の将来のバージョンで使用される可能性がある; 実装はこのパラメータを他の用途に使用しないことを推奨される。 Date.prototype.toLocaleTimeString () この関数は文字列値を返す。文字列の内容は実装依存であるが、現在のタイムゾーンの、簡便で人間に読解可能な、ホスト環境の現在のロケールの慣習に該当する形式の Date の "time" 成分の表現が意図される。 NOTE この関数の第一引数は、この標準の将来のバージョンで使用される可能性がある; 実装はこのパラメータを他の用途に使用しないことを推奨される。 Date.prototype.valueOf () valueOf関数は、この時間地である数値を返す Date.prototype.getTime () この時間値を返す。 Date.prototype.getFullYear () YearFromTime(LocalTime(t))を返す Date.prototype.getUTCFullYear () YearFromTime(t)を返す Date.prototype.getMonth () MonthFromTime(LocalTime(t)) Date.prototype.getUTCMonth () MonthFromTime(t) Date.prototype.getDate () DateFromTime(LocalTime(t)) Date.prototype.getUTCDate () DateFromTime(t) Date.prototype.getDay () WeekDay(LocalTime(t)) Date.prototype.getUTCDay () WeekDay(t) Date.prototype.getHours () HourFromTime(LocalTime(t)) Date.prototype.getUTCHours () HourFromTime(t) Date.prototype.getMinutes () MinFromTime(LocalTime(t)) Date.prototype.getUTCMinutes () MinFromTime(t) Date.prototype.getSeconds () SecFromTime(LocalTime(t)) Date.prototype.getUTCSeconds () SecFromTime(t) Date.prototype.getMilliseconds () msFromTime(LocalTime(t)) Date.prototype.getUTCMiliseconds () msFromTime(t) Date.prototype.getTimezoneOffset () 地方時とUTC時の差を分で返す (t - LocalTime(t)) / msPerMinute Date.prototype.setTime (time) Date.prototype.setMilliseconds (ms) MakeTime(HourFromTime(t), MinFromTime(t), Result(2)) UTC(MakeDate(Day(t), Result(3))) Date.prototy.setUTCMilliseconds (ms) MakeTime(HourFromTime(t), MinFromTime(t), SecFromTime(t), Result(2)) MakeDate(Day(t), Result(3)) Date.prototype.setSeconds (sec[ ms ]) MakeTime(HourFromTime(t), MinFromTime(t), Result(2), Result(3)) UTC(makeDate(Day(t), Result(4))) setSecondsメソッドのlengthプロパティは2 Date.prototype.setUTCSeconds (sec [, ms ]) msが指定されないならば、msにgetUTCMilliseconds()の値を指定されたように振舞う MakeTime(HourFromTime(t), MinFromTime(t), Result(2), Result(3)) MakeDate(Day(t), Result(4)) getUTCSecondsメソッドのlengthプロパティは2 Date.prototype.setMinutes (min [, sec [, ms ] ] ) sec が指定されないならば、 sec に getSeconds( ) の値を指定されたように振舞う。 ms が指定されないならば、 ms に getMilliseconds( ) の値を指定されたように振舞う。 setMinutes メソッドの length プロパティは 3 Date.prototype.setUTCMinutes (min [, sec [, ms ] ] ) sec が指定されないならば、 sec に値 getUTCSeconds( ) の値を指定されたように振舞う。 ms が指定されないならば、 ms に値 getUTCMilliseconds( ) の値を指定されたように振舞う。 setUTCMinutes メソッドの length プロパティは 3 Date.prototype.setHours (hour [, min [, sec [, ms ] ] ] ) min が指定されないならば、 min に getMinutes( ) の値を指定されたように振舞う。 sec が指定されないならば、 sec に getSeconds( ) の値を指定されたように振舞う。 ms が指定されないならば、 ms に getMilliseconds( ) の値を指定されたように振舞う。 setHours メソッドの length プロパティは 4 Date.prototype.setUTCHours (hour [, min [, sec [, ms ] ] ] ) min が指定されないならば、 min に getUTCMinutes( ) の値を指定されたように振舞う。 sec が指定されないならば、sec に getUTCSeconds( ) の値を指定されたように振舞う。 ms が指定されないならば、 ms に getUTCMilliseconds( ) の値を指定されたように振舞う。 setUTCHours メソッドの length プロパティは 4 Date.prototype.setDate (date) MakeDay(yearFromTime(t), MonthFromTime(t), Result(2)) UTC(MakeDate(Result(3), TimeWithinDay(t))) Date.prototype.setUTCDate (date) MakeDay(YearFromTime(t), MonthFromTime(t), Result(2)) MakeDate(Result(3), TimeWithinDay(t)) Date.prototype.setMonth (month [, date ] ) date が指定されないならば、 date に getDate( ) の値を指定されたように振舞う。 setMonth メソッドの length プロパティは 2 Date.prototype.setUTCMonth (month [, date ] ) date が指定されないならば、 date に getUTCDate( ) の値を指定されたように振舞う。 setUTCMonth メソッドの length プロパティは 2 Date.prototype.setFullYear (year [, month [, date ] ] ) month が指定されないならば、 month に getMonth( ) の値を指定されたように振舞う。 date が指定されないならば、 date に getDate( ) の値を指定されたように振舞う。 setFullYear メソッドの length プロパティは 3 Date.prototype.setUTCFullYear (year [, month [, date ] ] ) month が指定されないならば、 month に getUTCMonth( ) の値を指定されたように振舞う。 date が指定されないならば、 date に getUTCDate( ) の値を指定されたように振舞う。 setUTCFullYear メソッドの length プロパティは 3 Date.prototype.toUTCString ( ) この関数は文字列値を返す。文字列の内容は実装依存であるが、 UTC の、簡便で人間に読解可能な形式の Date の表現が意図される。 Dateインスタンスのプロパティ Dateインスタンスは、Dateプロトタイプオブジェクトから継承したプロパティの上に、特にプロパティを持たない
https://w.atwiki.jp/tdnki/pages/43.html
2. nativeコードへの移行 前回のコードによる描画処理には、Xperia VLで50ms~70ms程度かかっていた(15~20fps)。 これからさらに重い画像処理を追加しながらも、30fps程度は実現したいため、 C/C++による実装に切り替えて高速化を図っていく。 前回、Javaで書いたpreviewBufferRgbaを書き込む処理を、C++で置き換えることを目標とする。 2-1. nativeサポートの追加 プロジェクト上で右クリックし、[Android Tools] [Add Native Support...] を選択する。 適当なライブラリ名を入力して決定すると、プロジェクトルートにjniフォルダが作成される。 以降、ツールバーのとんかちのアイコンや、プロジェクトのビルドのタイミングでnativeコードがビルドされる。 早速ビルドしてみようととんかちを押すと、次の警告が出る。 APP_PLATFORM android-** is larger than android minSdkVersion ** in ./AndroidManifest.xml 自動で設定されたnativeコードのターゲットが、アプリ側で設定したminSdkVersionより大きいことを示す警告で、 アプリ側ではエラーとして扱われる。 jniフォルダにApplication.mkファイルを追加し、minSdkVersionを超えない値をターゲットとすることで解決できる。 Application.mk APP_PLATFORM = android-8 2-2. native関数を呼ぶ準備 関数を呼びたいクラスに、関数定義と、staticイニシャライザでsoを読み込む処理を追加する。 MainActivity.java private native boolean processImage(byte[] src, int[] dst, int width, int height); static { System.loadLibrary("[[ComicFinder]]"); } 次にヘッダファイルを作成する。 自分で書こうとすると、何らかのミスで実行時にUnsatisfiedLinkErrorが出るのがオチなので、javahで自動生成しておきたい。 コマンドは次のようになるか。(カレントがプロジェクトルートであることを想定) javah -classpath ".\bin\classes; android-sdkのパス \platforms\android-14\data\layoutlib.jar" -o .\jni\ComicFinder.hpp com.example.comicfinder.MainActivity ヘッダファイルができたら、実体もコーディングする。 ひとまずは呼び出しが上手くいくかを確認したいため、空の関数を書いておく。 ComicFinder.cpp #include "ComicFinder.hpp" JNIEXPORT bool JNICALL Java_com_example_comicfinder_MainActivity_processImage (JNIEnv *env, jobject me, jbyteArray src, jintArray dst, jint width, jint height) { return false; } アプリ側で呼び出し。 MainActivity.java private void updateFrame(byte[] data) { processImage(data, previewBufferRgba, previewSize.width, previewSize.height); これを実行してエラーが起きなければ成功。 2-3. 関数の実装 GetPrimitiveArrayCritical()で、Javaの配列にnative側から触れるポインタが取得できる。 ComicFinder.cpp #include stdlib.h #include "ComicFinder.hpp" JNIEXPORT bool JNICALL Java_com_example_comicfinder_MainActivity_processImage (JNIEnv *env, jobject me, jbyteArray src, jintArray dst, jint width, jint height) { unsigned char *p_src = reinterpret_cast unsigned char * (env- GetPrimitiveArrayCritical(src, NULL)); if (NULL == p_src) { return false; } unsigned char *p_dst = reinterpret_cast unsigned char * (env- GetPrimitiveArrayCritical(dst, NULL)); if (NULL == p_dst) { env- ReleasePrimitiveArrayCritical(src, p_src, 0); return false; } for (int k = 0; k width*height; k++) { p_dst[k*4+0] = p_dst[k*4+1] = p_dst[k*4+2] = p_src[k]; p_dst[k*4+3] = 0xff; } env- ReleasePrimitiveArrayCritical(dst, p_dst, 0); env- ReleasePrimitiveArrayCritical(src, p_src, 0); return true; } 2-4. 目標達成 描画処理の時間は30ms程度となった。 が、複雑な画像処理をしていないにも関わらず、すでに30fpsぎりぎりである。 画像処理自体は5msで終わっているため、Surfaceへの描画が完全にボトルネックとなっている。 まずこちらの処理の高速化や並列化を検討する必要があるかもしれない。 ここまでのソース ComicFinder.zip
https://w.atwiki.jp/javamock/pages/36.html
テキストエディタ ソース ver1.0 TextEditor.java import java.awt.Dimension; import java.awt.HeadlessException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTextArea; /** * テキストエディタのメインクラスです * * @author mock * */ public class TextEditor extends JFrame implements ActionListener { /** * serialVersionUID */ private static final [[long]] serialVersionUID = 1L; /** * テキストエリア */ private JTextArea textArea; /** * メニューバー */ private JMenuBar menuBar; /** * ファイル選択 */ private JFileChooser fileChooser = new JFileChooser(); /** * テキストエリアの幅 */ private final [[int]] textAreaWidth = 300; /** * テキストエリアの高さ */ private final int textAreaHeight = 300; /** * 新規のタイトル名 */ private final [[String]] undifinedTitle = "title"; /** * バージョン */ private final String version = "ver1.0"; /** * コンストラクタ * * @throws HeadlessException */ TextEditor() throws HeadlessException { super(); setVisible(true); setTitle(undifinedTitle); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // メニューバーの作成 createMenuBar(); // テキストエリアの作成 createTextArea(textAreaWidth, textAreaHeight); pack(); } /** * mainメソッドです * * @param args */ public static void main(String[] args) { new TextEditor(); } /** * メニューバーを作成するメソッドです */ private void createMenuBar() { menuBar = new JMenuBar(); getRootPane().setJMenuBar(menuBar); // ファイル(F) JMenu menuFile = new JMenu("ファイル(F)"); menuFile.setMnemonic('F'); menuBar.add(menuFile); // ファイル(F)>新規(N) JMenuItem menuItemNew = new JMenuItem("新規(N)"); menuItemNew.setMnemonic('N'); menuItemNew.setActionCommand("NEW"); menuItemNew.addActionListener(this); menuFile.add(menuItemNew); // ファイル(F)>開く(O) JMenuItem menuItemOpen = new JMenuItem("開く(O)"); menuItemOpen.setMnemonic('O'); menuItemOpen.setActionCommand("OPEN"); menuItemOpen.addActionListener(this); menuFile.add(menuItemOpen); // ファイル(F)>上書き保存(S) JMenuItem menuItemSave = new JMenuItem("上書き保存(S)"); menuItemSave.setMnemonic('S'); menuItemSave.setActionCommand("SAVE"); menuItemSave.addActionListener(this); menuFile.add(menuItemSave); // ファイル(F)>名前を付けて保存(A) JMenuItem menuItemSaveAs = new JMenuItem("名前を付けて保存(A)"); menuItemSaveAs.setMnemonic('A'); menuItemSaveAs.setActionCommand("SAVEAS"); menuItemSaveAs.addActionListener(this); menuFile.add(menuItemSaveAs); // ヘルプ(H) JMenu menuHelp = new JMenu("ヘルプ(H)"); menuHelp.setMnemonic('H'); menuBar.add(menuHelp); // ヘルプ(H)>バージョン情報 JMenuItem menuItemVersion = new JMenuItem("バージョン情報"); menuItemVersion.setActionCommand("VERSION"); menuItemVersion.addActionListener(this); menuHelp.add(menuItemVersion); } /** * テキストエリアを作成するメソッドです * * @param width * テキストエリアの幅 * @param height * テキストエリアの高さ */ private void createTextArea(int width, int height) { textArea = new JTextArea(); JScrollPane scrollPane = new JScrollPane(textArea); scrollPane.setPreferredSize(new Dimension(width, height)); getContentPane().add(scrollPane); } /* * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ @Override public void actionPerformed(ActionEvent e) { String actionCommand = e.getActionCommand(); if (actionCommand.equals("NEW")) { newFile(); } else if (actionCommand.equals("OPEN")) { openFile(); } else if (actionCommand.equals("SAVE")) { save(); } else if (actionCommand.equals("SAVEAS")) { saveAs(); } else if (actionCommand.equals("VERSION")) { showVersionInfo(); } } /** * 「ファイル(F)>新規(N)」選択時に処理を行うメソッドです */ private void newFile() { fileChooser.setSelectedFile(null); fileChooser.setName(undifinedTitle); setTitle(undifinedTitle); textArea.setText(""); } /** * 「ファイル(F)>開く(O)」選択時に処理を行うメソッドです */ private void openFile() { try { if (fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { File selectedFile = fileChooser.getSelectedFile(); FileReader fileReader = new FileReader(selectedFile); textArea.read(fileReader, null); fileReader.close(); setTitle(fileChooser.getName(selectedFile)); } } catch (Exception e) { e.printStackTrace(); } } /** * 「ファイル(F)>上書き保存(S)」選択時に処理を行うメソッドです */ private void save() { // ファイルが既に開かれている場合 if (fileChooser.getSelectedFile() != null) { try { writeFile(); } catch (Exception e) { e.printStackTrace(); } [[return]]; } saveAs(); } /** * 「ファイル(F)>名前を付けて保存(A)」選択時に処理を行うメソッドです */ private void saveAs() { try { // ファイルダイアログ「保存」が選択された場合 if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) { writeFile(); File selectedFile = fileChooser.getSelectedFile(); setTitle(fileChooser.getName(selectedFile)); } } catch (Exception e) { e.printStackTrace(); } } /** * 「ヘルプ(H)>バージョン情報」選択時に処理を行うメソッドです */ private void showVersionInfo() { JOptionPane.showMessageDialog(this, version, "version", JOptionPane.INFORMATION_MESSAGE); } /** * fileChooserで選択されているファイルを保存するメソッドです * * @throws IOException */ private void writeFile() throws IOException { FileWriter fileWriter = new FileWriter(fileChooser.getSelectedFile()); fileWriter.write(textArea.getText()); fileWriter.close(); } }
https://w.atwiki.jp/morrowind/pages/224.html
Herbalism Lite【薬草をActivateするだけで採取ができ、薬草が復活するまで薬草は消える】 最終更新日 2009-12-17 タグ #H *Mod 操作 概要 Shakeidasさん作。 植物採集の操作を楽にするMod。 従来だとコンテナの中から荷物を取り出すように“草木をOpen”しなければならなかったが、このModを導入すると地面に落ちている物を拾う感覚(Activateキーを押すだけ)で採集ができるようになる。採集できなかったときはメッセージが出る。連打しても特に処理がもたついたり重くなったりした感はない。TES Toolでクリーニングしてから使用しているが、今のところ私の環境では不具合は出てない。 ダウンロード PES -- Herbalism Lite コメント欄 環境音を改善するModの中には植物にスクリプトを追加して植物から音が出るようにしている物がある。そういうModとの衝突が心配。例えばこのModはExpanded Soundsと衝突すると思う(未確認)。でも衝突を放置したとしても発生する問題は環境音が減るくらいかな? -- 管理人 (2007-10-13 21 51 41) Expanded Soundsと併用してますけど何も不具合はありませんよ。 -- 名無しさん (2008-11-25 18 28 16) 名前 コメント
https://w.atwiki.jp/touhoukashi/pages/4256.html
【登録タグ A Silver Forest Silver Forest 2006-2012 BESTⅠ さゆり 天空のグリニッジ 曲 東方秘封魔術】 【注意】 現在、このページはJavaScriptの利用が一時制限されています。この表示状態ではトラック情報が正しく表示されません。 この問題は、以下のいずれかが原因となっています。 ページがAMP表示となっている ウィキ内検索からページを表示している これを解決するには、こちらをクリックし、ページを通常表示にしてください。 /** General styling **/ @font-face { font-family Noto Sans JP ; font-display swap; font-style normal; font-weight 350; src url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/10/NotoSansCJKjp-DemiLight.woff2) format( woff2 ), url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/9/NotoSansCJKjp-DemiLight.woff) format( woff ), url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/8/NotoSansCJKjp-DemiLight.ttf) format( truetype ); } @font-face { font-family Noto Sans JP ; font-display swap; font-style normal; font-weight bold; src url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/13/NotoSansCJKjp-Medium.woff2) format( woff2 ), url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/12/NotoSansCJKjp-Medium.woff) format( woff ), url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/11/NotoSansCJKjp-Medium.ttf) format( truetype ); } rt { font-family Arial, Verdana, Helvetica, sans-serif; } /** Main table styling **/ #trackinfo, #lyrics { font-family Noto Sans JP , sans-serif; font-weight 350; } .track_number { font-family Rockwell; font-weight bold; } .track_number after { content . ; } #track_args, .amp_text { display none; } #trackinfo { position relative; float right; margin 0 0 1em 1em; padding 0.3em; width 320px; border-collapse separate; border-radius 5px; border-spacing 0; background-color #F9F9F9; font-size 90%; line-height 1.4em; } #trackinfo th { white-space nowrap; } #trackinfo th, #trackinfo td { border none !important; } #trackinfo thead th { background-color #D8D8D8; box-shadow 0 -3px #F9F9F9 inset; padding 4px 2.5em 7px; white-space normal; font-size 120%; text-align center; } .trackrow { background-color #F0F0F0; box-shadow 0 2px #F9F9F9 inset, 0 -2px #F9F9F9 inset; } #trackinfo td ul { margin 0; padding 0; list-style none; } #trackinfo li { line-height 16px; } #trackinfo li nth-of-type(n+2) { margin-top 6px; } #trackinfo dl { margin 0; } #trackinfo dt { font-size small; font-weight bold; } #trackinfo dd { margin-left 1.2em; } #trackinfo dd + dt { margin-top .5em; } #trackinfo_help { position absolute; top 3px; right 8px; font-size 80%; } /** Media styling **/ #trackinfo .media th { background-color #D8D8D8; padding 4px 0; font-size 95%; text-align center; } .media td { padding 0 2px; } .media iframe nth-of-type(n+2) { margin-top 0.3em; } .youtube + .nicovideo, .youtube + .soundcloud, .nicovideo + .soundcloud { margin-top 0.75em; } .media_section { display flex; align-items center; text-align center; } .media_section before, .media_section after { display block; flex-grow 1; content ; height 1px; } .media_section before { margin-right 0.5em; background linear-gradient(-90deg, #888, transparent); } .media_section after { margin-left 0.5em; background linear-gradient(90deg, #888, transparent); } .media_notice { color firebrick; font-size 77.5%; } /** Around track styling **/ .next-track { float right; } /** Infomation styling **/ #trackinfo .info_header th { padding .3em .5em; background-color #D8D8D8; font-size 95%; } #trackinfo .infomation_show_btn_wrapper { float right; font-size 12px; user-select none; } #trackinfo .infomation_show_btn { cursor pointer; } #trackinfo .info_content td { padding 0 0 0 5px; height 0; transition .3s; } #trackinfo .info_content ul { padding 0; margin 0; max-height 0; list-style initial; transition .3s; } #trackinfo .info_content li { opacity 0; visibility hidden; margin 0 0 0 1.5em; transition .3s, opacity .2s; } #trackinfo .info_content.infomation_show td { padding 5px; height 100%; } #trackinfo .info_content.infomation_show ul { padding 5px 0; max-height 50em; } #trackinfo .info_content.infomation_show li { opacity 1; visibility visible; } #trackinfo .info_content.infomation_show li nth-of-type(n+2) { margin-top 10px; } /** Lyrics styling **/ #lyrics { font-size 1.06em; line-height 1.6em; } .not_in_card, .inaudible { display inline; position relative; } .not_in_card { border-bottom dashed 1px #D0D0D0; } .tooltip { display flex; visibility hidden; position absolute; top -42.5px; left 0; width 275px; min-height 20px; max-height 100px; padding 10px; border-radius 5px; background-color #555; align-items center; color #FFF; font-size 85%; line-height 20px; text-align center; white-space nowrap; opacity 0; transition 0.7s; -webkit-user-select none; -moz-user-select none; -ms-user-select none; user-select none; } .inaudible .tooltip { top -68.5px; } span hover + .tooltip { visibility visible; top -47.5px; opacity 0.8; transition 0.3s; } .inaudible span hover + .tooltip { top -73.5px; } .not_in_card span.hide { top -42.5px; opacity 0; transition 0.7s; } .inaudible .img { display inline-block; width 3.45em; height 1.25em; margin-right 4px; margin-bottom -3.5px; margin-left 4px; background-image url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2971/7/Inaudible.png); background-size contain; background-repeat no-repeat; } .not_in_card after, .inaudible .img after { content ; visibility hidden; position absolute; top -8.5px; left 42.5%; border-width 5px; border-style solid; border-color #555 transparent transparent transparent; opacity 0; transition 0.7s; } .not_in_card hover after, .inaudible .img hover after { content ; visibility visible; top -13.5px; left 42.5%; opacity 0.8; transition 0.3s; } .not_in_card after { top -2.5px; left 50%; } .not_in_card hover after { top -7.5px; left 50%; } .not_in_card.hide after { visibility hidden; top -2.5px; opacity 0; transition 0.7s; } /** For mobile device styling **/ .uk-overflow-container { display inline; } #trackinfo.mobile { display table; float none; width 100%; margin auto; margin-bottom 1em; } #trackinfo.mobile th { text-transform none; } #trackinfo.mobile tbody tr not(.media) th { text-align left; background-color unset; } #trackinfo.mobile td { white-space normal; } document.addEventListener( DOMContentLoaded , function() { use strict ; const headers = { title アルバム別曲名 , album アルバム , circle サークル , vocal Vocal , lyric Lyric , chorus Chorus , narrator Narration , rap Rap , voice Voice , whistle Whistle (口笛) , translate Translation (翻訳) , arrange Arrange , artist Artist , bass Bass , cajon Cajon (カホン) , drum Drum , guitar Guitar , keyboard Keyboard , mc MC , mix Mix , piano Piano , sax Sax , strings Strings , synthesizer Synthesizer , trumpet Trumpet , violin Violin , original 原曲 , image_song イメージ曲 }; const rPagename = /(?=^|.*
https://w.atwiki.jp/api_programming/pages/239.html
Action - Trello Developers Actions Actions are generated whenever an action occurs in Trello. 例えば、カードを削除した場合、カードが削除されたという情報が カードがあったListに カードがあったBoardに カードを削除したUserに アクションのオブジェクトIDとともに残る Actions for Trello objects can be listed from nested action endpoints - e.g. the resource GET /1/boards/[board_id]/actions lists all of the actions for the given board. Additionally, data regarding individual action objects can be retrieved and updated using the resources listed below. You Can t List Actions If you are looking to get the actions for a resource, you ll want to use that resource s {resourceId}/actions/ endpoint. アクションの種類については、この下のページを参照のこと。 You can see some board actions in the activity feed in the board sidebar like below You can see some card actions in the activity feed like below Action Object id string The ID of the action data object Relevant information regarding the action date date When the action occurred idMemberCreator string The ID of the member who caused the action type string The type of the action. See list of Action Types for options. Actions Nested Resource Action は Trello API に於いて、入れ子リソースとして含まれている。 この幾重にも入れ子になっているという特性は、アクションは他のリソースのcontext内に作られている、という事実によるものだ。 例えば、ある User が他の User をボードに加えたら、Trello は addMemberToBoard アクションを、そのボードに加える。 Therefore, it makes sense to be able to access all of the actions within the context of an object from which they were created. Nested Actions with Query Params Parameter Valid Values Default Description actions_entities boolean true, false false Boolean to return actions entities or not. actions_display boolean true, false false Boolean to return actions display or not. actions_format string One of count, list, or minimal list The format that actions should be returned in. actions_since string ISO Datetime or Mongo ID none The maximum date for when the actions were created. For more information on using since to page responses, visit the intro to Paging page. actions_limit integer 数値(0~1000) 50 返すアクションの数 action_fields string Comma-separated list of Action Object Fields. all A comma-separated list of Action Object Fields to be included in the returned action objects. action_member boolean true, false true Determines whether to return the member object for the action. action_member_fields string String avatarHash,fullName,initials,username The fields to be returned if the member object is being returned. action_memberCreator boolean Bool true Determines whether to return the memberCreator object for the action. action_memberCreator_fields string string avatarHash,fullName,initials,username The fields to be returned if the memberCreator object is being returned. https //api.trello.com/1/boards/BdarzfKF/?fields=id actions=addAttachmentToCard bold(){actions_limit=2} action_fields=idMemberCreator action_memberCreator_fields=fullName { "id" "54a17d76d4a5072e3931736b", "actions" [ { "id" "54a1b7c3a6ea7c2b1eaa5cdf", "idMemberCreator" "53baf533e697a982248cd73f", "memberCreator" { "id" "53baf533e697a982248cd73f", "fullName" "Lauren Moon" } }, { "id" "54a1b73f030916211e718516", "idMemberCreator" "53baf533e697a982248cd73f", "memberCreator" { "id" "53baf533e697a982248cd73f", "fullName" "Lauren Moon" } } ] } Nested Actions via URL Params /object/{id}/actions entities boolean Default false display boolean Default false filter string Default commentCard, updateCard idList fields string Default all, all or a comma-separated list of data/date/idMemberCreator/type limit integer Default 50 0 - 1000 format string Default list. One of count, list, minimal since date ISO-Formatted Date (2017-12-07T15 07 08.977Z) or MongoID (5a6029d00000000000000000) before date ISO-Formatted Date (2017-12-07T15 07 08.977Z) or MongoID (5a6029d00000000000000000) page integer Default 0 idModels string Comma-separated list of model IDs member boolean Default true member_fields string Default avatarHash,fullName,initials,username all or a comma-separated list of avatarHash bio bioData confirmed fullName idPremOrgsAdmin initials memberType products status url username memberCreator boolean Default true memberCreator_fields string Default avatarHash,fullName,initials,username all or a comma-separated list of avatarHash bio bioData confirmed fullName idPremOrgsAdmin initials memberType products status url username SUGGEST EDITS Action Types Actions have many types. Due to the number of actions that occur in Trello, nested action resources filter out specific action types. For example, changing the name of a checklistItem will trigger a webhook on the board and will POST an action of type updateCheckItem with the old and new name of the checklistItem. However, no nested actions resource will return action types of updateCheckItem /cards/{id}/actions/, /boards/{id}/actions/. However you can get that specific action instance via GET /actions/{id}/. All Action Types Action Name acceptEnterpriseJoinRequest addAdminToBoard addAdminToOrganization addAttachmentToCard addBoardsPinnedToMember addChecklistToCard addLabelToCard addMemberToBoard addMemberToCard addMemberToOrganization addOrganizationToEnterprise addToEnterprisePluginWhitelist addToOrganizationBoard commentCard convertToCardFromCheckItem copyBoard copyCard copyChecklist createLabel copyCommentCard createBoard createBoardInvitation createBoardPreference createCard createChecklist createList createOrganization createOrganizationInvitation deleteAttachmentFromCard deleteBoardInvitation deleteCard deleteCheckItem deleteLabel deleteOrganizationInvitation disableEnterprisePluginWhitelist disablePlugin disablePowerUp emailCard enableEnterprisePluginWhitelist enablePlugin enablePowerUp makeAdminOfBoard makeAdminOfOrganization makeNormalMemberOfBoard makeNormalMemberOfOrganization makeObserverOfBoard memberJoinedTrello moveCardFromBoard moveCardToBoard moveListFromBoard moveListToBoard removeAdminFromBoard removeAdminFromOrganization removeBoardsPinnedFromMember removeChecklistFromCard removeFromEnterprisePluginWhitelist removeFromOrganizationBoard removeLabelFromCard removeMemberFromBoard removeMemberFromCard removeMemberFromOrganization removeOrganizationFromEnterprise unconfirmedBoardInvitation unconfirmedOrganizationInvitation updateBoard updateCard updateCheckItem updateCheckItemStateOnCard updateChecklist updateLabel updateList updateMember updateOrganization voteOnCard Excluded Action Types These actions will be sent to Webhooks but are not included in nested action resource responses (e.g. GET board/[board_id]/actions). Action Name addAdminToBoard (Deprecated in favor of makeAdminOfBoard) addAdminToOrganization (Deprecated in favor of makeAdminOfOrganization) addBoardsPinnedToMember addLabelToCard copyChecklist createBoardInvitation createBoardPreference createCheckItem createChecklist createLabel createOrganizationInvitation deleteAttachmentFromCard (Excluded from /lists/{listId}/actions) deleteCheckItem deleteComment deleteLabel makeAdminOfOrganization removeAdminFromBoard (Deprecated in favor of makeNormalMemberOfBoard) removeAdminFromOrganization (Deprecated in favor of makeNormalMemberOfOrganization) removeBoardsPinnedFromMember removeLabelFromCard removeMemberFromBoard removeMemberFromOrganization updateCheckItem updateComment updateLabel voteOnCard
https://w.atwiki.jp/f-01a/pages/52.html
DoJa-4.1→DoJa-5.0の変更点 DoJa-4.1→DoJa-5.0の変更点主な新機能対応機種 スペック強化 Imageクラスの強化 Bluetoothのサポート OpenGLのサポート 形状衝突判定のサポート 直感ゲーム向けセンサのサポート メモリ管理機能の追加 追加されたクラスAbstractShape+継承クラス [任] AccelerationData [任] AccelerationEventListener [任] AccelerationSensor [任] AdhocDataTransfer [任] AudioTrackPresenter [任] BTConnection [任] BTStateListener BVBuilder BVFigure [信][任] Bluetooth [任] CertificateStore [任] CheckPINParameters Collision CollisionObserver [任] Compass [任] DTVParameter [任] DTVSchedule [任] DTVScheduleParam DataBoxFolder [任] DecomailDraft [任] DecomailTemplateStore [信][任] DirectBuffer+実装クラス [信][任] DirectBufferFactory [任] ExifData [任] FelicaAdhocListener [任] FelicaClientObexConnection [任] FelicaPushListener [任] FelicaServerObexConnection [任] FelicaStatus [信][任] FloatMath [信][任] GPSLocationProvider [任] GestureReader [信][任] GraphicsOGL IntersectionAttribute [信][任] Matrix4f MemoryManager [任] OwnerProfile [任] PINAttributeData [信][任] Point3f [信][任] Point4f [任] RemoteDevice [任] RollData [任] RollReader [任] SPPConnection [任] ShakeReader Shape [任] ThruRWOfflineFelica [任] TrackingListener [信][任] Tuple3f [信][任] Tuple4f [信][任] Vector3f [信][任] Vector4f ViewVolume [任] Display2 [任] MediaPlayer [任] RadioTuner 変更のあったクラスAudioPresenter CodeReader Display [任] Felica Font Frame+継承クラス IApplication Image ImageStore [信] MailAgent MediaImage MediaResource+実装クラス MovieStore PalettedImage PKCS7Signer [任] Toruca [任] TorucaStore VisualPresenter [任] CodeReader2 [任] PhoneSystem2 削除されたクラスなし 主な新機能 対応機種 DoJa-5.0D系:D903i, D903iTV, D904i F系:F903i, F903iX, F903iBSC, F904i N系:N903i, N904i P系:P903i, P903iTV, P903iX, P904i SH系:SH903i, SH903iTV, SH703i, SH904i, SH704i, SH705i, SH705iII, SH706ie SO系:SO903i, SO903iTV, SO703i, SO704i DoJa-5.0LED系:D703i, D704i, D705i, D705iμ F系:F703i, F704i, F801i, F705i, F-05A N系:N703iD, N703iμ, N704iμ P系:P703i, P704i スペック強化 アプリのサイズが1024KB(JAR+スクラッチパッド)に増えた Imageクラスの強化 Image透過色と透明度の概念が追加された透過色を指定して透過や半透明での描画が可能 Bluetoothのサポート Bluetoothなど外部機器との接続を制御する トラステッド専用 OpenGLのサポート GraphicsOGLなどOpenGL ES 1.0相当の高速なグラフィックス機能が使用可能 トラステッド専用 形状衝突判定のサポート Collisionなど形状の衝突判定を行える 直感ゲーム向けセンサのサポート AccelerationSensor、Compass、RollReader、ShakeReaderなど加速度センサ、電子コンパス、端末の移動、端末の振動を検出可能 すべてオプションAPI メモリ管理機能の追加 MemoryManagerRuntimeのメソッドより詳細な情報が得られる Javaヒープ/ネイティブデータヒープごとのサイズを取得可能それぞれの最大連続空き領域も取得できる 追加されたクラス AbstractShape+継承クラス 衝突判定用の形状を表すShapeを実装している 次の継承ツリーを形成するAbstractBVBoxAABBox CapsuleAABCapsule CylinderAABCylinder Sphere LineRay Plane Point Triangle [任] AccelerationData 加速度センサから取得したデータを表すX/Y/Z軸方向の加速度と端末の傾きを取得可能 オプションAPI [任] AccelerationEventListener 加速度センサのイベントリスナ各種イベントの通知を行う オプションAPI [任] AccelerationSensor 加速度センサを制御する周期計測の開始と終了やデータの取得が可能 オプションAPI [任] AdhocDataTransfer Felicaのアドホック通信による連続データ転送を制御する オプションAPI [任] AudioTrackPresenter 動画(MediaImage)の音声部分を再生できるAudioPresenterAudioPresenter.getAudioTrackPresenter()で取得する 動画の音声部分同士は並列再生できない オプションAPI [任] BTConnection Bluetoothの接続を定義するインタフェースSPPConnectionが実装している オプションAPI [任] BTStateListener Bluetoothの接続状態の変化に関するイベントリスナ各種イベントの通知を行う オプションAPI BVBuilder FigureからBVFigureやBoundingVolumeを生成する BVFigure ボーン構造を持つFigureを表す複数のBoundingVolumeで構成される [信][任] Bluetooth Bluetoothの制御を行う主に外部機器との接続を制御する 外部機器はRemoteDeviceとして制御する トラステッドアプリ専用 / オプションAPI [任] CertificateStore ネイティブの証明書機能にアクセスする証明書データのIDを取得しPKCS7Signerのメソッドで使用できる オプションAPI [任] CheckPINParameters FeliCaカードのPIN属性参照用パラメータを表すパラメータの登録が可能 オプションAPI Collision 形状の衝突判定を行うDrawableObject3D#isCross()よりパフォーマンス重視の実装 CollisionObserver 形状の衝突時に通知を受けるためのインタフェースメソッドの呼び出しは非同期ではない [任] Compass 電子コンパスを制御する端末の向いている方向(方角)を取得できる オプションAPI [任] DTVParameter ワンセグから渡される連携パラメータを表すパラメータの更新はアプリのレジューム時に行われる オプションAPI [任] DTVSchedule ワンセグの視聴/録画予約スケジューラにアクセスする予約の登録を行うことができる オプションAPI [任] DTVScheduleParam DTVScheduleで登録に使用するパラメータを表す オプションAPI DataBoxFolder データBOXのフォルダ管理を行うフォルダの追加とフォルダのIDを取得可能 [任] DecomailDraft デコメールを表す「本文」はHTMLパートや添付ファイルも含む オプションAPI [任] DecomailTemplateStore デコメールのテンプレート管理機能にアクセスするテンプレートの追加/取得を行える オプションAPI [信][任] DirectBuffer+実装クラス GraphicsOGLで使用するバッファを表すDirectBufferFactoryのメソッドで取得する 確保されたメモリはコンパクションによって移動されることは無い 次の実装ツリーを形成するByteBuffer FloatBuffer IntBuffer ShortBuffer トラステッドアプリ専用 / オプションAPI [信][任] DirectBufferFactory GraphicsOGLで使用するバッファを確保するDirectBufferの実装クラスのインスタンスを取得できる トラステッドアプリ専用 / オプションAPI [任] ExifData JPEGのExifを表すタグ情報の取得と値の取得/設定を行える オプションAPI [任] FelicaAdhocListener Felicaのアドホック通信による連続データ転送のイベントリスナ各種イベントの通知を行う オプションAPI [任] FelicaClientObexConnection Felicaのアドホック通信にOBEXクライアントとして通信する場合の接続を定義する オプションAPI [任] FelicaPushListener Felicaが外部R/WからのPush通知を受けた際のイベントリスナPush通知を行う オプションAPI [任] FelicaServerObexConnection Felicaのアドホック通信にOBEXサーバとして通信する場合の接続を定義する オプションAPI [任] FelicaStatus FeliCaカードのエラー情報を表す オプションAPI [信][任] FloatMath 基本的な数値演算を行う三角関数と平方根が計算可能 ハードウェアを使用するためMathより高速 トラステッドアプリ専用 / オプションAPI [信][任] GPSLocationProvider GPSによって測位を行うLocationProviderのメソッドで取得する トラステッドアプリ専用 / オプションAPI [任] GestureReader 動作認識機能を表す動作認識はカメラから取得した画像を元に行う 実際に使用するのはこのクラスのサブクラス オプションAPI [信][任] GraphicsOGL OpenGL ES 1.0相当のグラフィックス機能を提供するインタフェースGraphicsのインスタンスをキャストして使用する Graphicsの2D描画とは混在できないが共存は可能明示的な切り替えが必要 Graphics3Dとは競合する先に使用された方のみが有効となる トラステッドアプリ専用 / オプションAPI IntersectionAttribute Pickした情報を保持するCollisionObserver#onPick()で使用する [信][任] Matrix4f 同次変換を行う4x4行列を表す処理高速化のため行列要素へのアクセスはメンバの直接参照が推奨されている トラステッドアプリ専用 / オプションAPI MemoryManager DoJaのメモリ管理機構にアクセスする各区画の情報を取得できる(区画0は常にJavaヒープ) 最大連続空き領域を取得できる大きいメモリを確保時にGCが必要かを判定できる GC後にも領域が不足するケースを検出できる [任] OwnerProfile マイプロフィールのデータを管理するマイプロフィールの各種データを取得できる オプションAPI [任] PINAttributeData FeliCaカードのPIN属性データを表す オプションAPI [信][任] Point3f 3次元の点を表すTuple3fの実装クラス トラステッドアプリ専用 / オプションAPI [信][任] Point4f 4次元の点を表すTuple4fの実装クラス トラステッドアプリ専用 / オプションAPI [任] RemoteDevice Bluetoothで接続する外部機器を表す オプションAPI [任] RollData ロール動作の認識処理結果を表すRollReaderのメソッドで取得する X/Y方向の移動量と処理結果の品質を取得可能 オプションAPI [任] RollReader ロール動作の認識を行う端末の向きを変えたときの移動量を取得可能 オプションAPI [任] SPPConnection BluetoothのSPP通信時の接続を定義するインタフェース オプションAPI [任] ShakeReader シェイク動作の認識を行う端末が振られたときの振動量を取得可能 オプションAPI Shape 衝突判定用の形状を表すすべての形状の基底インタフェース 形状に応じてこのクラスのサブインタフェースを実装している 次の実装ツリーを形成するBoundingVolumeAxisAlignedBV [任] ThruRWOfflineFelica FeliCaのオフライン処理によって外部カードにアクセスする オプションAPI [任] TrackingListener 定期的な測位中に測定結果を受け取るためのリスナLocationProviderのメソッドで設定する オプションAPI [信][任] Tuple3f 3次元要素を表すPoint3fとVector3fが継承している 処理高速化のため要素へのアクセスはメンバの直接参照が推奨されている トラステッドアプリ専用 / オプションAPI [信][任] Tuple4f 4次元要素を表すPoint4fとVector4fが継承している 処理高速化のため要素へのアクセスはメンバの直接参照が推奨されている トラステッドアプリ専用 / オプションAPI [信][任] Vector3f 3次元ベクトルを表すTuple3fの実装クラス トラステッドアプリ専用 / オプションAPI [信][任] Vector4f 4次元ベクトルを表すTuple4fの実装クラス トラステッドアプリ専用 / オプションAPI ViewVolume 視錐台におけるBoundingVolumeの可視判定を行う [任] Display2 Displayのオプション機能を定義する ディスプレイ向き変更のイベントを取得できるCanvas#processEvent()の第一引数に渡される この場合、第二引数に画面の向きが渡される画面の向きはPhoneSystem2.ATTR_DISPLAY_STYLE_*で定義されている オプションAPI [任] MediaPlayer 外部メモリに格納されている動画(File)を直接再生できるネイティブプレイヤーを使用するため停止などのメソッドは無い オプションAPI [任] RadioTuner ラジオチューナーを制御するオン/オフ、周波数、音量などを制御可能 他の音声とは同時に再生できない(かつ同時再生時の優先度が低い) サスペンド状態/待ち受け休眠状態でも音は鳴り続けるアプリを終了すると停止する オプションAPI 変更のあったクラス AudioPresenter AudioTrackPresenterを取得するメソッドが追加された 曲の演奏時間をミリ秒単位で取得できるようになった 再生のループ回数を指定できるようになった 再生完了時にAUDIO_COMPLETEが発生するようになった 再生ループ時にAUDIO_LOOPEDが発生するようになった CodeReader 設定できるフォーカスの種類のリストを取得できるようになった フォーカスの状態を取得/設定できるようになった Display GPSキーを表す定数が追加された [任] Felica activate()が非推奨になった903i以降ではactivate()を呼ばなくても外部R/Wからのアクセスが可能なため Font フォントサイズをドット単位で指定できるようになった 対応しているドットサイズの一覧を取得できるようになった Frame+継承クラス ソフトキーの表示/非表示を設定できるようになったCanvasのみで有効 その他のクラスではオーバーライドで機能が止められている IApplication 起動タイプの定数がいくつか追加された iモードブラウザをサスペンドして起動できるようになった ワンセグを起動できるようになった Image 透過色と透明度の概念が追加された透過色を指定して透過したり半透明での描画が可能 それぞれのパラメータはImageが持つ(Graphics#drawImage()に指定するわけではない) TransparentImageとGraphics2の機能の一部が実装されたようなもの ImageStore 指定フォルダ内の画像IDをサスペンド無しに一度に取得できるようになったフォルダIDはDataBoxFolderのメソッドで取得する [信] MailAgent デコメールの送信ができるようになった MediaImage Exif情報を取得/設定できるようになった MediaResource+実装クラス メモリを効率よく利用できるuse()のオーバーロードが追加された一度きり指定+メモリ領域の使いまわしによって実現 一部の実装クラスでは複数のリソースに対して一度に上記のuse()を実行できる MovieStore 指定フォルダ内の動画IDをサスペンド無しに一度に取得できるようになったフォルダIDはDataBoxFolderのメソッドで取得する PalettedImage 空のイメージを生成できるようになった byte[]やInputStreamで内容を差し替えられるようになった生成済みインスタンスのメモリ領域を使いまわせる PKCS7Signer 任意の秘密鍵でデジタル署名付きデータを生成できるようになった [任] Toruca IP-ID、色ID、カナID、再配布識別子、有効期限の概念が追加された各種データの取得が可能 プロパティ値の取得/設定ができるようになった [任] TorucaStore 端末内のトルカを検索できるようになった VisualPresenter ネイティブプレイヤーの全画面で再生できるようになった強制的な指定も可能 [任] CodeReader2 FPコードを表す定数が追加された [任] PhoneSystem2 画面の向き(スタイル)を取得できるようになった 画面の向きを表す定数が追加されたこの定数はDisplay2でも使用する 削除されたクラス なし 今回のバージョンアップでクラスは削除されていない
https://w.atwiki.jp/ohden/pages/267.html
Apache2+SSL 環境 Ubuntu 8.10 Apache 2.2.14 OpenSSL 0.9.8k 当たり前じゃが、Apache2がinstall済みであることが前提。 Apacheのインストール OpenSSLとmodsslのinstall。 ※最近下のapt-get使ったらどっちも無いって言われた...が、apache-ssl moduleは入っとるっぽぃ。Apache入れた段階で一緒に入るようになったんかな? sudo apt-get install ssl sudo apt-get install apache-ssl Apache-SSLモジュールを有効にする。 sudo a2enmod ssl Enabling module ssl.See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.Run /etc/init.d/apache2 restart to activate new configuration! SSL使用portの設定。 cd /etc/apache2/ sudo vi ports.conf 中を見て、mod_sslに対する記述が無かったら以下を追記する。 IfModule mod_ssl.c Listen 443 /IfModule ports.confの中にはこんなんもあるんじゃが...これは何なんじゃろうか? IfModule mod_gnutls.c Listen 443 /IfModule GnuTLSって事はGnuのTLS moduleの参照らしいが...まぁ、わからんので放置。 証明書と秘密鍵を作る。 sudo mkdir ssl cd ssl sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf ./apache.pem ※証明書を作り直して、その証明書を有効にしようと思うたらapacheの再起動が必要。 commonNameを設定。 [Tab]キー押下で『了解』へ移動し[Enter]キー押下で設定 出来上がった証明書はtext fileなので閲覧が可能。 sudo vi apache.pem 見てみると 『-----BEGIN RSA PRIVATE KEY-----』~『-----END RSA PRIVATE KEY-----』のエリアと 『-----BEGIN CERTIFICATE-----』~『-----END CERTIFICATE-----』エリアに分かれてると分かる。 それぞれ秘密鍵と証明書。 cd /etc/apache2/sites-available/ sudo vi default-ssl 50行目辺りに『SSLCertificateFile』『SSLCertificateKeyFile』の項目があるので、その項目をコメントアウト(行頭に『#』を付ける)し、以下の1行を追加する。 SSLCertificateFile /etc/apache2/ssl/apache.pem#SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem#SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key ※行頭#で始まっとる下2行はうちの環境にたまたまあった『SSLCertificateFile』『SSLCertificateKeyFile』の項目ね。環境によって違うと思う。 『SSLCertificateFile』は証明書fileを指定する項目で、『SSLCertificateKeyFile』は秘密鍵を指定する項目。 で、その2項目をコメントアウトして『SSLCertificateFile』だけにしてるのは、さっき作成したapache.pemの中に証明書も秘密鍵も入ってるから。apacheが使いたい方だけを読み込んで使ってくれるらしい。 ※今回は『make-ssl-cert』を使ったが、OpenSSLとか使ってもできるらしい。やってないのでまた今度。 sudo a2ensite default-ssl Enabling site default-ssl.Run /etc/init.d/apache2 reload to activate new configuration! sudo /etc/init.d/apache2 restart * Restarting web server apache2 apache2 Could not reliably determine the server s fully qualified domain name, using 127.0.1.1 for ServerName... waiting .apache2 Could not reliably determine the server s fully qualified domain name, using 127.0.1.1 for ServerName[ OK ] 再起動できたら、ブラウザでアクセスしてみる。 https //localhost ※httpsなのを忘れないように。 アクセスすると認証ダイアログが表示される。 勝手に作った証明書なので、当然怪しいって言われるけど気にしない。w 気になる人はお金払って証明書買って下さい。(ノ∀`) あ、そぉそぉ。 証明書作成時に入力したcommonNameってのはココに表示されるんよね。 更新日: 2010年11月11日 (木) 13時38分22秒